<template>
    <view>
        <u-modal :show="show" :title="title" @confirm="change">
            <view class="slot-content">
                <u--input class="inputs" placeholder="请输入ip地址" border="surround" v-model="value"></u--input>
            </view>
        </u-modal>
        <u-modal :show="shows" title="提示" showCancelButton @cancel="cancel" @confirm="confirm" ref="uModal"
            :content='content' :asyncClose="true">
            <view class="slot-content">
                <text>是否确定使用{{ value }}该api地址</text>
            </view>
        </u-modal>
    </view>
</template>

<script>
export default {
    data() {
        return {
            value: '',
            show: true,
            shows: false,
            title: 'api协议',
            content: `是否确定使用该api地址`,
            restartTimer: null,  // 存储定时器ID
        }
    },
    // 生命周期管理
    beforeDestroy() {
        // 组件销毁时强制清除定时器
        if (this.restartTimer) {
            clearTimeout(this.restartTimer);
            this.restartTimer = null;
        }
    },
    mounted() {
        this.value = process.env.VUE_APP_API_URL
    },
    methods: {
        open() {
            // console.log('open');
        },
        close() {
            this.show = false
            // console.log('close');
        },
        change() {
            this.shows = true
            console.log(this.value)
        },
        cancel() {
            this.shows = false
        },
        // 确定按钮
        async confirm() {

            try {
                // 1. 更新Vuex状态（添加容错）
                if (this.value) {
                    this.$store.commit('SET_api', this.value);
                } else {
                    throw new Error('API地址不能为空');
                }

                // 2. 显示提示（优化提示体验）
                await uni.showToast({
                    title: 'API设置成功，应用即将重启',
                    icon: 'none',
                    duration: 2000,
                });
                // 3. 延迟执行重启（封装重启逻辑）
                this.restartTimer = setTimeout(() => {
                    this.restartApp();
                }, 2000);
            } catch (error) {
                // 错误处理（显示详细错误信息）
                console.error('设置失败:', error);
                uni.showModal({
                    content: `重启失败: ${error.message}`,
                    showCancel: false
                });
            }
        },
        restartApp() {
            // 执行重启前强制清除定时器
            clearTimeout(this.restartTimer);
            this.restartTimer = null;
            // 环境检测（避免非APP环境报错）
            if (typeof plus === 'undefined') {
                uni.showModal({
                    content: '当前环境不支持应用重启',
                    showCancel: false
                });
                return;
            }
            try {
                plus.runtime.restart();
            } catch (restartError) {
                // 重启失败处理
                uni.showModal({
                    content: `重启异常: ${restartError.message}`,
                    showCancel: false
                });
                // 降级方案：尝试路由重启
                uni.reLaunch({ url: '/pages/index/index' });
            }
        }
    }
}
</script>

<style lang="scss" scoped>
.slot-content {
    width: 100%;
    display: flex;
    align-items: center;
    height: 100rpx;
    text-align: center;
}

.inputs {
    width: 100%;
}
</style>